package main

import "fmt"

/**
两个goroutine,两个channel
	1. 生成0～100的数字,发送到ch1
	2. 从ch1 中取出数据计算它的平方,把结果发送到ch2中
*/

// 生成0～100的数字,发送到ch1
func f1(ch chan int) { // 如果需要限制"ch" 只能"发送"的通道 只需咋chan 关键字后面加<- 如：chan<- 接收则写到chan 前面 ch-< chan
	for i := 0; i < 100; i++ {
		ch <- i
	}
	close(ch)
}

func f2(ch1 chan int, ch2 chan int) {

	for {
		tmp, ok := <-ch1
		if !ok {
			break
		}
		ch2 <- tmp * tmp
	}
	close(ch2)
}
func main() {
	ch1 := make(chan int, 100)
	ch2 := make(chan int, 100)
	go f1(ch1)
	//fmt.Println(ch1) // 内存地址
	go f2(ch1, ch2)

	// 从ch2通道中获取值
	for ret := range ch2 {
		fmt.Println(ret)
	}
}
